# num1=int(input("请输入一个除数："))
# num2=int(input("请输入一个被除数："))
# print (num1/num2)

# 1.捕获普通异常，如果没有异常走try代码块，如果有异常走except代码块，就是说try和except只有选一个跑
# try:
#     num1 = int(input("请输入一个除数："))
#     num2 = int(input("请输入一个被除数："))
#     print(num1 / num2)
# except:
#     print("这是一个异常")

# 2.捕获指定的异常
# try:
#     num1 = int(input("请输入一个除数："))
#     num2 = int(input("请输入一个被除数："))
#     print(num1 / num2)
# # 如果明确知道错误类型可以指定错误类型，如果不知道可以实际制造错误，获得python解释器抛出的异常，然后自己拿来抛出异常
# except ZeroDivisionError:
#     print("被除数不能为0")
# # 同时抛出多个异常，有异常的名称会一层一层的寻找匹配然后捕获异常
# except ValueError:
#     print("输入数值型被除数")

# 3.捕获通用型异常，不写任何异常名称（当不知道异常名称时候可以使用），可以捕获任何的异常，此处与1相同
# try:
#     num1 = int(input("请输入一个除数："))
#     num2 = int(input("请输入一个被除数："))
#     print(num1 / num2)
# except:
#     print("这是一个通用型异常")

# 4.与else一起使用，当没有异常时候走else代码段，也就是excep和else只能走其中一个，注意：try里面的代码块也是跑的
# try:
#     num1 = int(input("请输入一个除数："))
#     num2 = int(input("请输入一个被除数："))
#     print(num1 / num2)
# except:
#     print("这是一个通用型异常")
# else:
#     print("程序没有异常")

# 5.不管有没有异常都走finally语句，注意：try可以与except，else，finally一起使用的，也可以组合使用比如没有else
# try:
#     num1 = int(input("请输入一个除数："))
#     num2 = int(input("请输入一个被除数："))
#     print(num1 / num2)
# except:
#     print("这是一个通用型异常")
# else:
#     print("程序没有异常")
# finally:
#     print("不管有没有异常都执行")

# 总结：异常关键字的分支执行顺序
# 1.try和except只能2选1执行
# 2.except和else只能2选1执行
# 3.finally可以和其他组合使用，不管有没有异常都执行的代码段

# 1.开发自己抛出异常
# x =10
# if x>5:
#     raise Exception("这是抛出的异常")

# 2.自定义异常类
class MyException(Exception):
    def __init__(self,value1,value2):
        self.value1=value1
        self.value2=value2

raise MyException("value1","value2")
